package com.party.core.dao.read.activity;

import com.party.common.annotation.DataAuthParam;
import com.party.common.paging.Page;
import com.party.core.dao.read.BaseReadDao;
import com.party.core.model.activity.Activity;
import com.party.core.model.activity.ActivityWithMemberPartner;
import com.party.core.model.activity.DistributionActivity;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * ActivityReadDao活动数据读取
 *
 * @author Wesley
 * @data 16/9/5 17:21
 */
@Repository
public interface ActivityReadDao extends BaseReadDao<Activity> {

	List<Activity> joinedList(Activity activity);

	@DataAuthParam(moduleType="ACTIVITY" ,field="member",alias="a")
	List<ActivityWithMemberPartner> webListPage(@Param("activity") ActivityWithMemberPartner activity, @Param("params") Map<String, Object> params, Page page);

	/**
	 * 根据事件编号统计
	 * @param eventId 事件编号
	 * @return 统计结果
	 */
	Activity countForEventId(@Param(value = "eventId") String eventId);

	Integer getCount(Activity activity);

	/**
	 * 合伙人的众筹项目
	 *
	 * @param params
	 * @param page
	 * @return
	 */
	List<Map<String, Object>> copartnerListPage(@Param("params") Map<String, Object> params, Page page);

	/**
	 * 根据事件编号统计项目个数
	 * @param eventId 事件编号
	 * @return
	 */
    Integer getCountByEventId(String eventId);

    List<String> getOrgNotEventId();

    List<Map<String,Object>> getActivityCopartner(@Param(value = "eventId") String eventId);

	/**
	 * 获取合伙人活动详情的数据页
	 * @param targetId
	 * @return
	 */
	Map<String, Object> getActivityData(@Param("targetId") String targetId);

	/**
	 * 合作渠道的众筹活动列表
	 *
	 * @param params 参数
	 * @param page   分页参数
	 * @return
	 */
    List<Map<String,Object>> cosponsorList(@Param(value = "params") Map<String, Object> params, Page page);

	/**
	 * 通过发布者id获取项目（在当前项目的参与者有支持者的情况下）
	 *
	 * @param activityId  项目id
	 * @return
	 */
    List<Activity>findByIdActivitys(@Param(value = "activityId")String activityId );

    List<Map<String,Object>> copartnerListPage2(@Param("params") Map<String, Object> params, Page page);

	/**
	 * 已分销的项目
	 *
	 * @param activity 查询参数
	 * @param params
	 * @param page     分页参数
	 * @return 项目列表
	 */
    List<DistributionActivity> listForDistribution(@Param("activity") Activity activity, @Param("params") Map<String, Object> params, Page page);

	/**
	 * 课程列表
	 *
	 * @param activity
	 * @param params
	 * @param page
	 * @return
	 */
	List<ActivityWithMemberPartner> courseWebListPage(@Param("activity") ActivityWithMemberPartner activity, @Param("params") Map<String, Object> params, Page page);

	/**
	 * 锁行查询活动实体
	 *
	 * @param id
	 * @return 活动实体
	 */
    Activity rowLockQueryActivity(String id);

     /**
     * @Author hzq
     * @Description //根据众筹id找项目
     * @Date 18:14 2019/4/10
     * @param projectId
     * @return
     **/
	Activity findByProjectId(String projectId);

    /**
     * @param targetId 项目id
     * @return
     * @Author yifeng
     * @Description 获取众筹项目的众筹中，众筹成功人数
     * @Date 14:22 2019/4/12
     **/
    Activity getZcNumByTargetId(@Param(value = "targetId") String targetId, @Param(value = "queryZcNum")boolean queryZcNum);

    Integer findByCosponsorId(String cosponsorId);

    List<String> getXzgsActivityList(@Param(value = "title") String title, @Param(value = "memberId") String xzgsMemberId);

	Integer getActNumByMemberGroupId(@Param("memberGroupIds")List<String> memberGroupIds,@Param("params") Map<String, Object> params);

	List<Activity> getActivitysByEventId(@Param(value = "eventId") String eventId);
}
